﻿using Mt.Site.Core.WorkFlows.Design;
using Mt.Site.Core.WorkFlows.Process.Entities;
using Mt.Site.Core.WorkFlows.Process.Models;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;

namespace Mt.Site.Core.WorkFlows.Process
{
    public interface IWorkFlowHelper
    {
        Task<WorkFlowPaper> FirstOrDefaultWorkFlowPaperAsync(Guid paperId);

        Task<WorkFlowPaper> GetWorkFlowPaperAsync(Guid paperId);

        Task<List<WorkFlowPaperDto>> GetAllWorkFlowPaperAsync(Expression<Func<WorkFlowPaper, bool>> predicate);

        List<WorkFlowPaperDto> GetAllWorkFlowPaper(Expression<Func<WorkFlowPaper, bool>> predicate);

        Task<string> GetWenhaoAsync(Guid paperId, Guid workFlowId);

        Task<string> GetDefautTitle(Guid workFlowId);

        IWorkFlowFactory WorkFlowFactory { get; }
    }
}
